using System.Collections.Generic;
using TestClassesForConcepts.Sample3;

concept C1[T] 
{
    type A1;
    type A2 <: List<List<A1>>;
}

concept C2[S, T, U]
{
    type A1 >: KD1<U>;
    require A1 <: KA;
    
    type B1 <: KB;
    require KF1<T, B1> <: KE1<KD1<U>>;
    require B1 >: A1;

    type B2 <: PA;
    //require B2 <: B1;
}